package leetcode.editor.cn;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

/**
 * 题目Id：1071
 * 题目：字符串的最大公因子
 * 日期：2023-04-23 17:44:00
 *
 * @author YUCH
 */
//对于字符串 s 和 t，只有在 s = t + ... + t（t 自身连接 1 次或多次）时，我们才认定 “t 能除尽 s”。 
//
// 给定两个字符串 str1 和 str2 。返回 最长字符串 x，要求满足 x 能除尽 str1 且 X 能除尽 str2 。 
//
// 
//
// 示例 1： 
//
// 
//输入：str1 = "ABCABC", str2 = "ABC"
//输出："ABC"
// 
//
// 示例 2： 
//
// 
//输入：str1 = "ABABAB", str2 = "ABAB"
//输出："AB"
// 
//
// 示例 3： 
//
// 
//输入：str1 = "LEET", str2 = "CODE"
//输出：""
// 
//
// 
//
// 提示： 
//
// 
// 1 <= str1.length, str2.length <= 1000 
// str1 和 str2 由大写英文字母组成 
// 
//
// Related Topics 数学 字符串 👍 273 👎 0


public class GreatestCommonDivisorOfStrings {
    public static void main(String[] args) {
        Solution solution = new GreatestCommonDivisorOfStrings().new Solution();
        String s = solution.gcdOfStrings("ABCABCABC", "ABCABC");
        System.out.println(s);
        System.out.println("Hello world");
    }
    //leetcode submit region begin(Prohibit modification and deletion)

    /**
     *
     */
    class Solution {
        public String gcdOfStrings(String str1, String str2) {
            /**
             * 返回最大公因子
             * 暴力破解
             *
             */
            int minLen = Math.min(str1.length(), str2.length());
            for (int i = minLen ; i >0 ; i--) {
                String substr = str1.substring(0, i);
               //判断 如果两个可以拼接 直接返回最大
                if(check(str1,substr)&&check(str2,substr)){
                    return substr;
                }
            }


            return "";


        }
        public boolean check(String s,String subs){
            int len=s.length()/subs.length();
            StringBuffer buffer = new StringBuffer();
            for (int i = 0; i < len; i++) {
                buffer.append(subs);
            }
            return s.equals(buffer.toString());

        }
    }
//leetcode submit region end(Prohibit modification and deletion)

} 
